 
package nextel.ruta.bean;

import java.io.IOException;
import nextel.util.mvc.listenerLista;
import nextel.visita.bean.EstadoBean;
import pe.com.nextel.rms.DataInputStreamX;
import pe.com.nextel.rms.DataOutputStreamX;
import pe.com.nextel.rms.PersistenteX;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.Iterator;
import pe.com.nextel.util.List;
import pe.com.nextel.util.StringUtils;
import org.kxml2.io.KXmlParser;
import org.kxml2.io.KXmlSerializer;

/**
 *
 * @author eespinoza
 */
public class RutaBean extends PersistenteX implements listenerLista {
    
    public String codigoActividad;
    //public String idActividad;
    public String nombre;
    public String descripcion;
    public String direccion;
    public String fechaInicio;
    public int noVisita; // 0 none; 1 no visita
    public String ultimoEstado="";

    public List lstEstados = new ArrayList( );
    
    public EstadoBean getPrimerEstado(){ 
        return lstEstados.size() > 0 ? (EstadoBean) lstEstados.get(0): new EstadoBean();
        
    }
     
     public EstadoBean getUltimoEstado(){        
        return lstEstados.size() > 0 ? (EstadoBean) lstEstados.lastElement(): new EstadoBean();
    }
    
     public boolean rutaActiva(){
         return getEstadoActualSiguiente() == null ? false : true;
     }
    
    public EstadoBean getEstadoActualSiguiente(){ 
        if("".equals(ultimoEstado)){
            if(lstEstados.size() > 0)
                return (EstadoBean)lstEstados.get(0);
        }
 
        for(int i=0; i < lstEstados.size( ); i++ ){
            EstadoBean estado = (EstadoBean)lstEstados.get(i);
 
            if(estado.codigo.equals(ultimoEstado) && lstEstados.size() > i+1){ 
                EstadoBean estado1 = (EstadoBean)lstEstados.get(i+1); 
                return (EstadoBean)lstEstados.get(i+1);
            }
        }
        
        return null;
    }
    
    
    public String getCampoMostrar(){
        return nombre;
    }
    
    public void persistir(DataOutputStreamX dataOutput, List list) throws IOException {
        dataOutput.writeInt(list.size());
        
        for (Iterator it = list.iterator(); it.hasNext();) {
            RutaBean bean = (RutaBean) it.next();
            bean.persistirItem(dataOutput);
        }
    }
    
    public void persistirItem(DataOutputStreamX dataOutput ) throws IOException {

        dataOutput.writeShort(this.getPosicionID());
        //dataOutput.writeString(StringUtils.stringNullToBlank(idActividad));
        dataOutput.writeString(StringUtils.stringNullToBlank(codigoActividad));
        dataOutput.writeString(StringUtils.stringNullToBlank(nombre));
        dataOutput.writeString(StringUtils.stringNullToBlank(descripcion));
        dataOutput.writeString(StringUtils.stringNullToBlank(direccion));

//        dataOutput.writeString(StringUtils.stringNullToBlank(fechaInicio));
        dataOutput.writeString(StringUtils.stringNullToBlank(ultimoEstado));
        dataOutput.writeInt(noVisita);
        dataOutput.writeInt(lstEstados.size());

        if( lstEstados.size() > 0 ){
            
            for (Iterator it = lstEstados.iterator(); it.hasNext();) {
                EstadoBean bean = (EstadoBean) it.next();
                bean.persistirItem(dataOutput);
            }
        }
    }
    
    public List recuperar(DataInputStreamX dataInput) throws IOException {
        List lista = new ArrayList();
        RutaBean bean = null;
        int cant = dataInput.readInt();
        for (int i = 0; i < cant; i++) {
            bean = new RutaBean();
            bean.recuperarItem(dataInput);
            lista.add(bean);
        }
         
       // Arrays.sort(lista);
         
        return lista;
    }
    
    public void recuperarItem(DataInputStreamX dataInput) throws IOException {

        setPosicionID(dataInput.readShort());        
        //idActividad = dataInput.readString();
        codigoActividad = dataInput.readString();
        nombre = dataInput.readString();
        descripcion = dataInput.readString();
        direccion = dataInput.readString();

       // fechaInicio = dataInput.readString();
        ultimoEstado = dataInput.readString();
        noVisita = dataInput.readInt();
        int cantidad = dataInput.readInt();
        
        if( cantidad > 0 ){
            for (int it =0; it < cantidad; it++) {
                EstadoBean estado = new EstadoBean();
                estado.recuperarItem(dataInput);
                lstEstados.add(estado);
            }
        }
       
        
    }
    
    public void writeXMLObject(KXmlSerializer writer) throws IOException {
        
    }
    
    public void readXMLObject(KXmlParser parser) throws IOException {
        
    }
    
    public void clear(){
        if(lstEstados != null){
            lstEstados.clear();
            lstEstados = null;
        }
    }
 
}

